package com.ponhu.ea2.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.support.spring.annotation.FastJsonView;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ponhu.ea2.annotations.EnableColumnChangeLog;
import com.ponhu.ea2.enums.YesOrNoEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 货品表 
 * @TableName ph_inventory
 * @author zhaokai
 */
@Data
@Accessors(chain = true)
@TableName(value ="ph_inventory")
public class Inventory extends Model<Inventory> {

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 物料表ID
     */
    private Long materialId;

    /**
     * 货品编码(SN)
     */
    private String inventoryCode;

    /**
     * 货品类型
     * {@link com.ponhu.ea2.enums.InventoryTypeEnum}
     */
    private Integer inventoryType;

    /**
     * 是否二奢
     * {@link com.ponhu.ea2.enums.YesOrNoEnum}
     */
    private Integer isSecondhand;

    /**
     * 鉴定师ID
     */
    private Integer appraiserId;

    /**
     * 鉴定师
     */
    private String appraiserName;

    /**
     * 来源渠道，数据从采购中心取
     */
    private String sourceChannel;

    /**
     * 品类ID
     */
    @EnableColumnChangeLog(columnDesc = "品类")
    private Long categoryId;

    /**
     * 品牌ID
     */
    private Long brandId;

    /**
     * 货品名称
     */
    @EnableColumnChangeLog(columnDesc = "货品名称")
    private String inventoryName;

    /**
     * 货品主图
     */
    private String mainImage;

    /**
     * 货品细节图
     */
    private String detailImage;

    /**
     * 成色
     */
    private Integer quality;

    /**
     * 成色值
     */
    private String qualityValue;

    /**
     * 原产地
     */
    private String provenance;

    /**
     * 货品成本
     */
    private BigDecimal inventoryCost;

    /**
     * 入库价
     */
    private BigDecimal warehousePrice;

    /**
     * 瑕疵
     */
    private String flaw;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 是否可中检1是，2否
     * {@link com.ponhu.ea2.enums.YesOrNoEnum}
     */
    private Integer isUseCcic;

    /**
     * 是否已中检1未中检，2中检已通过，3中检未通过，4中检无结果
     */
    private Integer isDoneCcic;

    /**
     * 创建人姓名
     */
    private String createdByName;

    /**
     * 创建人ID
     */
    private Integer createdById;

    /**
     * 创建时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    /**
     * 更新人ID
     */
    private Integer updatedById;

    /**
     * 更新人姓名
     */
    private String updatedByName;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE, update = "NOW()")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedTime;

    /**
     * 货品渠道
     * {@link com.ponhu.ea2.enums.InventoryChannelEnum}
     */
    private Integer inventoryChannel;

    /**
     * 销售模式 1以采定销，2以销定采
     * {@link com.ponhu.ea2.enums.SalesModelEnum}
     */
    private Integer salesModel;

    /**
     * 条形码地址
     */
    private String barCodeUrl;

    /**
     * 年份
     */
    private String year;

    /**
     * 是否上传白底图
     * {@link com.ponhu.ea2.enums.YesOrNoEnum}
     */
    private Integer baseMap;

    /**
     * 包小检识图ID
     */
    private String itemId;

    /**
     * 包小检识图结果
     */
    private String bxjAiJson;

    /**
     * 是否kpi数据
     * {@link com.ponhu.ea2.enums.YesOrNoEnum}
     */
    private Integer isKpi;

    /**
     * 检测结果
     */
    private String maintainResult;

    /**
     * 检测备注
     */
    private String maintainRemarks;

    /**
     * 养护价
     */
    private BigDecimal maintenancePrice;

    public BigDecimal getMathMaintenancePrice() {
        if (ObjectUtils.isEmpty(maintenancePrice))
            return new BigDecimal(0);
        return maintenancePrice;
    }

    public BigDecimal getMathInventoryCost() {
        if (ObjectUtils.isEmpty(inventoryCost))
            return new BigDecimal(0);
        return inventoryCost;
    }

    public BigDecimal getMathWarehousePrice() {
        if (ObjectUtils.isEmpty(warehousePrice))
            return new BigDecimal(0);
        return warehousePrice;
    }

}